JavaScript Variables

The Evolution from var to let & const

var

ES5 時代的產物。缺乏區塊作用域 (Block Scope),容易造成變數外洩 (Leak)。

if (true) {
  var x = "I escaped!";
}
// ❌ x 洩漏到了大括號外面
console.log(x);
等待執行...

let

ES6 引入。具有區塊作用域 { },且允許後續重新賦值 (Reassign)。

let score = 100;
score = 80; // ✅ 允許修改

if (true) {
  let y = "Safe inside";
}
console.log(y); // ❌ 報錯!
等待執行...

const

ES6 引入。宣告後「不能重新賦值」,現代前端開發的首選預設值。

const PI = 3.14;
PI = 3.14159; // ❌ 報錯!

const user = { name: "Rui" };
user.name = "Jeremy"; // ✅ 物件內部屬性可改
console.log(user.name);
等待執行...